// pages/goods_list/index.js
// 引入封装的request异步请求
import request from '../../utils/request.js'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 储存关键字
    keyword : '电视',
    // 储存tab栏状态
    current : 0,
    // 储存请求数据的页码
    // 标识商品列表的加载进度提示
    hasData : true,
    pagesIndex: 1,
    // 储存商品数据列表
    goodsList:[],
    // 设置防抖节流，防止网速差bug，加条件请求数据（初始不加载）
    loading: false
  },
  // 处理tab类型切换
  handleTab(e){
   const {index} = e.currentTarget.dataset;
   this.setData({
     current:index
   })
  },
  //  封装请求商品数据的函数
  init(){
    // 如果数据加载完毕就不在请求数据
    if(this.data.hasData=== false){
      return;
    }
     setTimeout(()=>{
       request({
         url: '/goods/search',
         data: {
           query: this.data.keyword,
           pagenum: this.data.pagesIndex,
           pagesize: 10
         }
       }).then(res => {
         const { message } = res.data;
        //  console.log(message)
        //  返回数据改造，价格修改保留两位小数点
         const goodsData = message.goods.map(v=>{
           v.goods_price = Number(v.goods_price).toFixed(2);
            return v;
         })
         this.setData({
          //  加载的数据展开在要动态渲染的数组里面
           goodsList: [...this.data.goodsList, ...goodsData],
           //  加载数据完毕后，设置加载下一页数据
           loading : true
         })
         //  判断数据是否加载完毕
         if (this.data.goodsList.length >= message.total) {
           this.setData({
             hasData: false
           })
         }
       })
     },1000)
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // console.log(options)
    const {keyword} = options;
    this.setData({
      keyword
    })

    // 调用获取商品列表数据
    this.init();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
      if(this.data.loading === true){
        this.setData({
          pagesIndex : this.data.pagesIndex + 1,
          loading : false
        })
        // 加载下一页的数据
        this.init();
      }
  }
})